package backdate;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
//https://leetcode.cn/problems/VvJkup/description/
//给定一个不含重复数字的整数数组 nums ，返回其 所有可能的全排列 。可以 按任意顺序 返回答案。
public class LCR_083全排列 {
    class Solution {
        private List<List<Integer>> res = new ArrayList<>();
        private List<Integer> output = new ArrayList<>();
        public List<List<Integer>> permute(int[] nums) {
            // 处理空数组或null输入
            if (nums == null || nums.length == 0) {
                return res;
            }
            for(int i : nums)
                output.add(i);
            backtrack(0, nums.length);
            return res;
        }
        public  void backtrack(int first,int n){
            if(first == n){
                res.add(new ArrayList<>(output));
                return;
            }
            for(int i=first; i<n; i++){
                Collections.swap(output,first,i);
                backtrack(first + 1,n);
                Collections.swap(output,first,i);
            }
        }
    }
}
